#ifndef INTEGRADOR
#define INTEGRADOR

// classe integrador - para a etapa de simulacao 'dinamica'
// integracao simples por trapezios e base de tempo constante.
class integrator
{
private:
	double	lval,	// ultimo valor
			cval,	// valor atual
			tstep;	// intervalo de tempo para integracao
public:
	double	val;	// valor atual do integrador
	void	settstep(double time);		// configura time step
	void	setinitstate(double value);	// configura valor inicial do integrador
	double	integrate(double value);	    // faz a integracao setando o valor atual para value
	~integrator(void);
};

integrator::~integrator(void)
{
	printf(MSG66);
}
void integrator::settstep(double time)
{
	tstep=time;
}

void integrator::setinitstate(double value)
{
	lval=0;
	cval=0;
	val=value;
}

double integrator::integrate(double value)
{
	lval=cval;
	cval=value;
	val+=(cval+lval)*(tstep/2);
	return (val);
}

#endif